package cn.itcast.gateway.filter;

import org.springframework.cloud.gateway.filter.GatewayFilter;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;

import java.util.AbstractCollection;

/**
 * @author yangjy
 * @version 1.0
 * @description: 全局过滤器作用
 * 全局过滤器的作用也是处理一切进入网关的请求和微服务响应，与GatewayFilter的作用一样。
 * 区别在于GatewayFilter通过配置定义，处理逻辑是固定的；而GlobalFilter的逻辑需要自己写代码实现。
 * @date 2022/9/7 10:13
 */
public interface GlobalFilter extends org.springframework.cloud.gateway.filter.GlobalFilter  {

    /**
     * 处理当前请求，有必要的话通过 {@link GatewayFilterChain} 将请求交给下一个过滤器处理
     * @param exchange 请求上下文，里面可以获取Request、Response等信息
     * @param chain 用来把请求委托给下一个过滤器
     * @return {@code Mono<Void>} 返回标示当前过滤器业务结束
     */
    @Override
    Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain);

}
